
// 测试 this 关键字

// 在 node.js 环境下直接在 js 文件中书写的代码都是在一个匿名函数内执行的
// 即 直接在 js 文件中书写的代码并不是 全局的代码
console.log( arguments.callee );

console.log( '- - - - - - - - - - - - - - - -' );

// 在 node.js 环境下 直接使用 this 关键字获取到的并不是 全局的对象
console.log( this ); // 此时的 this 表示 Object 的一个实例
console.log( this.constructor.name ); // Object

console.log( '- - - - - - - - - - - - - - - -' );

function Chicken( name ) {
    // 在构造函数内部 this 表示当前实例
    this.name = name ;
    this.introduce = function(){
        console.log( '我是' , this.name  );
    }
}

// 在 c 所引用的实例内部可以使用 this 表示当前这只鸡
let c = new Chicken( '战斗鸡' );
// 默认情况下，在 introduce 内出现的 this 就表示当前这只鸡
// 所谓当前这只鸡就是 introduce() 之前的 . 前的变量所引用实例
c.introduce(); // 线程 调用 c 的 introduce 函数